package com.situ.service.impl;

import com.situ.dao.ProductDao;
import com.situ.entity.Product;
import com.situ.service.ProductService;
import com.situ.vo.ProductVO;
import com.situ.vo.TableVO;

import java.util.List;

/**
 * @author yangkx
 * @create 2023-08-28-15:18
 */
public class ProductServiceImpl implements ProductService {

    ProductDao dao = new ProductDao();

    //查询表格数据
    @Override
    public TableVO list(Integer page,Integer limit,String name,String manufacturer) {
        //查出来商品的数据（list格式）
        List<ProductVO> list = dao.list(page,limit,name,manufacturer);
        //把数据返回（响应）给table小工具（谁发的请求返回给谁）
        //创建一个TableVO类型的对象来接list
        TableVO vo = new TableVO();
        //让dao根据过滤条件帮我们统计一个数 来表示共有多少条数据
        vo.setCount(dao.count(name,manufacturer));
        vo.setData(list);//实际展示在页面上的内容
        return vo;

        /*使用JSON工具把对象转成JSON格式的字符串并返回
        //默认:jackson
        //通过jackson把vo对象转成json格式字符串（vo对象已经定义，格式符合table组件规定的数据格式！！）
        String s = new ObjectMapper().writeValueAsString(vo);
        //获取一个响应前台的写出对象：往前台写东西（页面；数据）
        PrintWriter pw = resp.getWriter();
        pw.write("s");
        */
    }

    //保存
    @Override
    public void save(Product p) {
        //如果是新增过来 id=null 执行保存操作
        if (p.getId() == null){
            dao.save(p);
        //如果是编辑过来 id != null 执行更新操作
        }else {
            dao.change(p);
        }
    }

    //删除
    @Override
    public void delete(Integer id) {
        dao.delete(id);
    }

    //编辑——根据ID查询该行数据带到前台
    @Override
    public Product selectById(Integer id) {
        List<Product> list = dao.selectById(id);
        return list.get(0);
    }
}
